package it.agm.fanta.fragment;

import it.agm.activity.dialog.GenericDialog;
import it.agm.fanta.FantaserviceApp;
import it.agm.fanta.R;
import it.agm.fanta.activity.FormazioneWriteActivity;
import it.agm.fanta.adapter.FormazioneReadAdapter;
import it.agm.fanta.asynctask.jersey.patch.Callback;
import it.agm.fanta.asynctask.jersey.patch.NetworkHandler;
import it.agm.fanta.constants.Constants;
import it.agm.fanta.model.FormazioneLegaRead;
import it.agm.fanta.model.Giocatore;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
//import it.unisalento.appsalento.adapter.AppelliDettaglioEsameAdapter;


public class FormazioneReadFragment extends Fragment {
	private static final String LA_DATA_LIMITE_PER_LA_CONSEGNA_DELLA_FORMAZIONE_PER_LA = "La data limite per la consegna della Formazione per la ";
	public static final String ARG_PLANET_NUMBER = "planet_number";
	private FormazioneReadAdapter adapter = null;
	public FormazioneReadFragment() {

	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
		View rootView = inflater.inflate(R.layout.fragment_formazione_read, container,false);
		//caricaLista();
//		// AdBuddiz START
//
//		AdBuddiz.showAd(FantaserviceApp.currentActivity());
//		// AdBuddiz END
		InterstitialAd interstitial;
		 interstitial = new InterstitialAd(FantaserviceApp.getAppContext());
		    interstitial.setAdUnitId("ca-app-pub-6490192218888076/3583199997");
		    interstitial.setAdListener(new AdListener() {
		        @Override 
		        public void onAdLoaded() {
		          Toast.makeText(FantaserviceApp.getAppContext(), "onAdLoaded", Toast.LENGTH_SHORT).show();
		        } 
		   
		   
		        @Override 
		        public void onAdFailedToLoad(int errorCode) {
		          String message = String.format("onAdFailedToLoad (%s)", "");
		          Toast.makeText(FantaserviceApp.getAppContext(), message, Toast.LENGTH_SHORT).show();
		        } 
		      }); 
		 // Create ad request.
		    AdRequest adRequest = new AdRequest.Builder()
	        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
	        .addTestDevice("INSERT_YOUR_HASHED_DEVICE_ID_HERE") 
	        .build(); 

		    // Begin loading your interstitial.
		    if (interstitial.isLoaded()) {
		    	interstitial.show();
		      }
		updateData(rootView);
		return rootView;
	}

	/**
	 * @param rootView
	 */
	private void updateData(View rootView) {
		rootView.findViewById(R.id.edit_formazione_button).setOnClickListener(
				new View.OnClickListener() {
					@Override
					public void onClick(View view) {
						if( FantaserviceApp.dettaglio != null &&
								FantaserviceApp.dettaglio.getDatalimiteconsegna() != null &&
								new Date().after(FantaserviceApp.dettaglio.getDatalimiteconsegna()) ){
								SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
								String dataLimite = sdf.format(FantaserviceApp.dettaglio.getDatalimiteconsegna());
							
							new GenericDialog(FantaserviceApp.currentActivity(), LA_DATA_LIMITE_PER_LA_CONSEGNA_DELLA_FORMAZIONE_PER_LA + FantaserviceApp.dettaglio.getGiornata()  + "° giornata  è "+ dataLimite+" ed è stata superata","WARNING");
						}else{
							Intent intent = new Intent(FantaserviceApp.currentActivity(), FormazioneWriteActivity.class);
							startActivity(intent);
						}
						
					}
				});
		if(FantaserviceApp.formazioneReaded != null && FantaserviceApp.lega != null && !FantaserviceApp.formazioneReaded.isEmpty()){
			if(FantaserviceApp.dettaglio != null){
				TextView giornata = (TextView) rootView.findViewById(R.id.giornata);
				giornata.setText(FantaserviceApp.dettaglio.getGiornata() +"°a giornata");
				TextView modulo = (TextView) rootView.findViewById(R.id.modulo);
				modulo.setText(FantaserviceApp.dettaglio.getModulo());
				TextView data = (TextView) rootView.findViewById(R.id.dataInserimento);
				if(FantaserviceApp.dettaglio.getDatainserimento() != null){
					SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
					data.setText(sdf.format(FantaserviceApp.dettaglio.getDatainserimento()));
				}
				
			}
			
	        ListView listView = (ListView) rootView.findViewById(R.id.listViewGiocatoriRosa);
	        
			ArrayList<Giocatore> list = FantaserviceApp.formazioneReaded;
			adapter = new FormazioneReadAdapter(getActivity(), R.layout.row_calciatore_fromazione_read,list);

			listView.setAdapter(adapter);
		}
	}
	
	public void caricaListaCoppa(){
		FantaserviceApp.request.setCoppa(true);
		FantaserviceApp.requestSetFormazione.setCoppa(true);
		caricaLista();
	}
	
	public void caricaListLega(){
		FantaserviceApp.request.setCoppa(false);
		FantaserviceApp.requestSetFormazione.setCoppa(true);
		caricaLista();
	}
	
	public void caricaLista(){
		
		String url = Constants.URL_REST 	+ Constants.SERVICE_FORMAZIONE;
		NetworkHandler networkHandler = NetworkHandler.getInstance();
		
		FormazioneLegaRead[] formazione = null ;
		
			FantaserviceApp.formazioneReaded = null;
			if(NetworkHandler.checkConnection(FantaserviceApp.getAppContext())){
				
				networkHandler.write(url, FormazioneLegaRead[].class, formazione,
					new Callback<FormazioneLegaRead[]>() {
						@Override
						public void callback(FormazioneLegaRead[] formazione) {
							if(formazione != null && formazione.length>0){
								List<Giocatore> list = formazione[0].getCalciatoreFormazioneLega();
								FantaserviceApp.dettaglio = formazione[0].getDettaglioFormazioneLega();
								FantaserviceApp.formazioneReaded= (ArrayList<Giocatore>) list;
								Collections.sort(FantaserviceApp.formazioneReaded, new LineupCustomComparator());
	//							Collections.sort(App.formazioneReaded, new FormazioneCustomComparator());
								try {
								    Thread.sleep(3000);                 //1000 milliseconds is one second.
								} catch(InterruptedException ex) {
								    Thread.currentThread().interrupt();
								}
								FantaserviceApp.formazioneReadFragment.refreshData();
							}
							
						}
					});
			}

	}
	
	
	public void refreshData() {
		
		updateData(getView());
		adapter.notifyDataSetChanged();
	}
	
	class FormazioneCustomComparator implements Comparator<Giocatore> {
	    @Override
	    public int compare(Giocatore o1, Giocatore o2) {
	    	int retVal = new Integer(o1.getPosizione()).compareTo(new Integer(o2.getPosizione()));
	    	
	    			
	        return retVal;
	    }
	}
	
	class LineupCustomComparator implements Comparator<Giocatore> {
	    @Override
	    public int compare(Giocatore o1, Giocatore o2) {
	    	int retVal = -(new Character(o1.getLineup()).compareTo(new Character(o2.getLineup())));
	    	if (retVal == 0) {
	    		retVal = new Integer(o1.getPosizione()).compareTo(new Integer(o2.getPosizione()));
	        }
	    			
	        return retVal;
	    }
	}
}
